home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
taropyon
/
install
/
install.cci
< prev
next >
Wrap
Text File
|
1993-11-30
|
6KB
|
259 lines
/*************************************************************************
* インストーラー
*************************************************************************/
#include "ccilib.h"
#ifndef DLGPOS_CENTER_OF_POS
/* 指定の座標を中心に */
# define DLGPOS_CENTER_OF_POS(_p) (0x20000+((_p)&0xFFFF))
#endif
/* パレットデータ */
char PltDat[3][16] =
{
/* G R B */
{ 0, 0, 0}, /* C_BALCK */
{ 0, 0, 0}, /* C_BLUE or C_THROUGH */
{ 7, 7, 8}, /* C_RED */
{12,12,13}, /* C_MAGENTA */
{ 6, 5, 7}, /* C_GREEN */
{ 8, 7, 9}, /* C_CYAN */
{10, 9,11}, /* C_YELLOW */
{11,11,12}, /* C_WHITE */
{ 5, 5, 6}, /* C_HBALCK */
{ 0, 0,11}, /* C_HBLUE */
{ 0,11, 0}, /* C_HRED */
{ 0,11,11}, /* C_HMAGENTA */
{11, 0, 0}, /* C_HGEEN */
{11, 0,11}, /* C_HCYAN */
{11,11, 0}, /* C_HYELLOW */
{14,14,15} /* C_HWHITE */
};
/*************************************************************************
* 初期化
*************************************************************************/
int init()
{
int i;
DSP_sysInit(0); /* 表示システム初期化 */
KBF_sysInit(); /* キーボードシステム初期化 */
KBF_kan_off();
FDL_sysInit(); /* ファイルダイアログ初期化 */
sdk_control(0); /* サイドワーク起動禁止 */
for ( i = 0; i < 2; ++i )
{
DSP_writePage(i);
DSP_setPlt( PltDat ); /* パレット設定 */
}
DSP_writePage(1);
DSP_title("INSTALL","0.99",15,7,0,0);
evt_setDspTime( 1, 432, 4, 7, 0 ); /* 時刻表示アイドリング処理設定 */
SYL_clear();
}
/*************************************************************************
* 終了
*************************************************************************/
int term()
{
FDL_sysEnd();
KBF_sysEnd();
DSP_sysEnd();
}
char StartPath[256];
char ItmPath[256]; /* アイテムファイル */
int DlgX0 = DLGPOS_CENTER_OF_POS(320);
int DlgY0 = DLGPOS_CENTER_OF_POS(320);
#define FRM_X1(_frm) _frm[0]
#define FRM_Y1(_frm) _frm[1]
#define FRM_X2(_frm) _frm[2]
#define FRM_Y2(_frm) _frm[3]
int item_adjust_pos( short *newfrm )
{
if ( FRM_X2(newfrm) > 621 )
{
FRM_X2(newfrm) = 621;
FRM_X1(newfrm) = FRM_X2(newfrm) - 24;
}
if ( FRM_Y2(newfrm) > 410 )
{
FRM_Y2(newfrm) = 410;
FRM_Y1(newfrm) = FRM_Y2(newfrm) - 24;
}
return (NORMAL);
}
int item_set_newpos( short *newfrm )
{
int ret;
int fpos, nextFPos;
int etyNum;
short icnNum;
char ttlStr[128];
char pathStr[128];
char paraStr[128];
int atrInf;
int nextFPos;
short frm[4];
fpos = 0;
FRM_X1(newfrm) = 0;
FRM_Y1(newfrm) = 0;
FRM_X2(newfrm) = 0;
FRM_Y2(newfrm) = 0;
while ( (fpos = ITM_GetPhysclNextFPos( ItmPath, fpos )) > 0 )
{
if ( ITM_GetStair( ItmPath, fpos ) == 0 )
{ /* ルートのみ */
ret = ITM_GetItmType(ItmPath,fpos);
switch ( ret )
{
case 1: /* group */
ITM_GetGrpData(ItmPath,fpos,&etyNum,&icnNum,ttlStr,&nextFPos,frm);
break;
case 2: /* apllication */
ITM_GetAplData(ItmPath,fpos,&icnNum,ttlStr,pathStr,paraStr,atrInf,frm);
break;
}
if ( FRM_X1(newfrm) < FRM_X2(frm) )
FRM_X1(newfrm) = FRM_X2(frm);
if ( FRM_Y1(newfrm) < FRM_Y2(frm) )
FRM_Y1(newfrm) = FRM_Y2(frm);
}
}
FRM_Y1(newfrm) = FRM_Y1(newfrm) + 15;
FRM_X2(newfrm) = FRM_X1(newfrm) + 24;
FRM_Y2(newfrm) = FRM_Y1(newfrm) + 24;
return (item_adjust_pos( newfrm ));
}
/*************************************************************************
* 画面
*************************************************************************/
int dsp_init(char **msg)
{
int i, len, x, y;
char *p;
DSP_writePage(0);
DSP_boxf(0,24,639,463,PSET,COLMIX(5,6));
if ( msg )
{
i = 0;
while ( (p = msg[i++]) != NULL )
{
len = strlen(p);
x = (640 - len * 8)/2;
y = 32 + (i * 18);
DSP_str(x,y,C_MBLACK,5,16,p);
}
}
}
/*************************************************************************
* サイズを示す文字列を返す
*************************************************************************/
char *getSizMsg( char *buf, unsigned int siz )
{
static char tmp[32];
float f;
if ( buf == NULL )
buf = tmp;
if ( siz == 0 )
strcpy( buf, "0");
else if ( siz < 1024 )
sprintf( buf, "%u", siz );
else if ( siz < 1024*1024 )
{
f = (float)siz / (float)1024;
sprintf( buf, "%.1fK", f );
} else
{
f = (float)siz / (float)(1024*1024);
sprintf( buf, "%.1fM", f );
}
return (buf);
}
#include "hewin.cci"
#include "gsplay.cci"
#define _INST_HEWIN (1)
#define _INST_GSPLAY (2)
#define _INST_EXIT (9999)
char *InstallMsg[8] =
{
" HEwin … 超弩級アプリケーション・プロセッサ HEwin ",
" GSPLAY … MIDI sound display system GSPLAY / [GS] emulation player ",
"",
" EXIT … 終了 ",
NULL
};
int install()
{
int ret;
char *obj;
char *mnu;
obj = MNU_alloc(4);
MNU_setObj(obj, 0, MNU_NOR, 'H', "HEwin" , NULL,_INST_HEWIN , NULL );
MNU_setObj(obj, 1, MNU_NOR, 'G', "GSPLAY", NULL,_INST_GSPLAY, NULL );
MNU_setObj(obj, 2, MNU_BLK, 0 , NULL , NULL, 0 , NULL );
MNU_setObj(obj, 3, MNU_NOR, 'X', "EXit" , NULL,_INST_EXIT , NULL );
do
{
dsp_init(InstallMsg);
DSP_writePage(1);
mnu = MNU_open( DlgX0, DlgY0, MNUATT_EXIT, obj, "INSTALLER MENU" );
ret = MNU_start ( mnu );
MNU_close(mnu);
switch ( ret )
{
case _INST_HEWIN: hewin_install(); break;
case _INST_GSPLAY: gsplay_install(); break;
}
} while ( ret >= 0 && ret != _INST_EXIT );
MNU_free(obj);
return (NORMAL);
}
/*************************************************************************
* MAIN
*************************************************************************/
int main( int argc, char **argv )
{
char tmp[256];
init();
FS_setFullPathname( tmp, argv[0] );
FS_getDnam( StartPath, tmp );
install();
term();
return (0);
}